springBean创建流程
扩展点
ImportBeanDefinitionRegistrar 与ImportSelector
实现接口可以添加自定义的beanDefinition,例:
1 |
|
BeanDefinitionBuilder.rootBeanDefinition(clazz); 如果clazz 实现了FactoryBean那么创建的bean 的类型不是clazz本身,而是getObject() 方法返回的对象类型
1 |
|
BeanFactoryPostProcessor
添加修改bean
1 |
|
BeanPostProcessor
bean的初始化过程(初始化,之前初始化之后)
总结
通过上面的扩展点可以动态修改bean然后注入到代码中,注入动态代理后的bean都是基于这些扩展点完成的。